package pe.gob.foncodes.ssa.bs.common.domain;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Transient;
import pe.gob.foncodes.ssa.bs.common.util.Constante;
import pe.gob.foncodes.ssa.bs.common.util.DateHelper;

@MappedSuperclass
public abstract class EntidadBaseAuditoria implements Serializable {

    private static final long serialVersionUID = 6125789787242234720L;
    
    private Long id;
    //Id del Usuario
    private Long idAuditoria;
    //Fecha de Creacion
    private Date fechaCreacionAud;
    //Tipo de Operacion
    private String tipoOperacion;
    //NidControlAcceso web
    private Long nIdCtrlAccesoWeb;
            
    public EntidadBaseAuditoria() {
    }

    @Transient
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    @Transient
    public Long getIdAuditoria() {
        return idAuditoria;
    }

    public void setIdAuditoria(Long idAuditoria) {
        this.idAuditoria = idAuditoria;
    }
    
    @Transient
    public Date getFechaCreacionAud() {
        return fechaCreacionAud;
    }

    public void setFechaCreacionAud(Date fechaCreacionAud) {
        this.fechaCreacionAud = fechaCreacionAud;
    }

    @Transient
    public String getTipoOperacion() {
        return tipoOperacion;
    }

    public void setTipoOperacion(String tipoOperacion) {
        this.tipoOperacion = tipoOperacion;
    }

    @Transient
    public Long getNIdCtrlAccesoWeb() {
        return nIdCtrlAccesoWeb;
    }

    public void setNIdCtrlAccesoWeb(Long nIdCtrlAccesoWeb) {
        this.nIdCtrlAccesoWeb = nIdCtrlAccesoWeb;
    }
    
    @PrePersist
    public void auditDataPP() {
        setFechaCreacionAud(DateHelper.getFechaActual());
        setTipoOperacion(Constante.TIPO_OPERACION_INSERTAR);
    }

    @PreUpdate
    public void auditDataPU() {
        setFechaCreacionAud(DateHelper.getFechaActual());
    }
}